/** http.js 工具函数
 *  by  
 *  2022.01.02
 */





// 封装日期格式化函数
//getMonth() 方法根据本地时间返回指定日期的月份（从 0 到 11）
const date = new Date();
function dateFormat(date, format = 'YYYY-MM-DD HH:mm:ss') {
    const config = {
        YYYY: date.getFullYear(),
        MM: date.getMonth() + 1,
        DD: date.getDate(),
        HH: date.getHours(),
        mm: date.getMinutes(),
        ss: date.getSeconds(),
    }
    for (key in config) {
        if (config[key] < 10 || config[key] == '00') {
            format = format.replace(key, '0' + config[key])
        } else {
            format = format.replace(key, config[key])
        }
    }
    return format
}
// console.log(dateFormat(date)); // 2022-01-02 23:08:08
// console.log(dateFormat(date, 'YYYY/MM/DD HH:mm:ss')); // 2022/01/02 23:08:08
// console.log(dateFormat(date, 'YYYY年MM月DD日 HH时mm分ss秒')); // 2022年01月02日 23时08分08秒


// 数组去重函数
function arrayRepeat(arr) {
    let a = arr.slice(0); //复制数组到临时数组
    for (var i = 0; i < a.length; i++) {
        for (var j = i + 1; j < a.length;) {
            if (a[j] == a[i])
            //后面的元素若和待比较的相同，则删除并计数；
            //删除后，后面的元素会自动提前，所以指针j不移动
            {
                a.splice(j, 1);
            }
            else {
                j++;
            }
            //不同，则指针移动
        }
    }
    return a;
}
// console.log(arrayRepeat([7, 7, 7, 78, 88, 2, 21, 212, 2, 2, 1, 2, 1])); //结果 [7, 78, 88, 2, 21, 212, 1]





const BASE_URL = 'http://23.224.181.169:8098';
const http = {
    // get请求
    get: function (url, callback) {
        let xhr = new XMLHttpRequest();
        xhr.open('get', url);
        xhr.onreadystatechange = function () {
            if (xhr.readyState === 4 && xhr.status === 200) {
                let res = xhr.responseText;
                res = JSON.parse(res);
                callback(res);
            }
        }
        xhr.send();
    },
    // post请求
    post: function (url, data, callback) {
        let xhr = new XMLHttpRequest();
        xhr.open('post',   url);
        xhr.setRequestHeader('Content-Type', 'application/json');
        xhr.onreadystatechange = function () {
            if (xhr.readyState === 4 && xhr.status === 200) {
                let res = JSON.parse(xhr.responseText);
                callback(res);
            }
        }
        xhr.send(JSON.stringify(data));
    },

    // ajax 请求
    ajax: function (obj) {
        if (obj.type === 'post') {
            let xhr = new XMLHttpRequest();
            xhr.open('post', obj.url);
            xhr.setRequestHeader('Content-Type', 'application/json');
            xhr.onreadystatechange = function () {
                if (xhr.readyState === 4 && xhr.status === 200) {
                    let res = JSON.parse(xhr.responseText);
                    obj.success(res);
                }
            }
            xhr.send(JSON.stringify(obj.data));
        }
        if (obj.type === 'get') {
            let str = '';
            for (key in obj.data) {
                str += `&${key}=${obj.data[key]}`;
            }
            str = str.substr(1);
            this.get(obj.url + '?' + str, obj.success);
        }
    },




    // 文件上传请求
    oploadFile: function (url, fdKey, fdValue, success) {
        // 实例化ajax对象
        const xhr = new XMLHttpRequest();
        
        // 构建form表单
        const fd = new FormData();
        fd.append(fdKey, fdValue);
        
        xhr.open('POST', BASE_URL + url);
        xhr.onreadystatechange = function () {
            if (xhr.readyState === 4 && xhr.status === 200) {
                const resData = JSON.parse(xhr.responseText)
                success(resData);
            }
        }
        xhr.send(fd);
    }




}



// 挂载到window
window.http = http;
window.$$ = http;
